General Requirements
There is no better way to get a feel for the Rover framework and its concepts than to write a service yourself. We've created several guides and quick-start tools to get you up and running quickly (and we continue to expand this to other languages as well) but there are some general remarks to keep in mind.
Elias Groot
Software Lead, Course Organizer
The Service Boot Process and the roverlib
When roverd
starts up a service, it will inject a special JSON configuration - we call this a bootspec - in the ASE_SERVICE
environment variable for that service process. This JSON variable serves as the "phone book" of the given service: it describes where it can find other services, how to connect to them and what options are available. You can parse this JSON configuration yourself, but for many popular languages, we have created the roverlib
: a library that (among others) parses the configuration and exposes useful methods for data reading, writing and serialization. You will need to pick a roverlib
flavor for your language of choice.
If no roverlib
is available for your language (yet), you can implement its functionality yourself by parsing the JSON according to our spec, which is defined here.
You will see that among roverlib
flavors, the functionality and source code are structured identically. This should make it easy for you to switch between different languages and roverlib
s.
Service Syncing Workflow
We suggest you develop your service on your own machine (your laptop) so that you have a safe base for file storage and git operations. When the Rover is powered on, you can run roverctl service sync
in your service's root directory. This will version and upload your service files to the Rover and make it available to enable when running roverctl pipeline
and entering configuration mode.
You can leave roverctl service sync
running in the background, as it will watch filesystem changes and upload the changed files automatically.